package com.yxz.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 时间处理工具类
 */
public class DateUtil {


	public final static String format1="yyyyMMdd";
	public final static String format2="yyyy-MM-dd";
	public final static String format3="yyyy-MM-dd HH:mm";
	public final static String format4="yyyy-MM-dd HH:mm:ss";
	public final static String format5="yyyy/MM/dd/HH/mm/ss/SSS";
	public final static String format6="yyyyMMddHHmmssSSS";

	/**
	 * 字符串转为时间
	 * @param DateStr  时间字符串
	 * @param DateFormat 字符串的时间格式 例如：yyyyMMdd；yyyy-MM-dd；yyyy-MM-dd HH:mm:ss
	 * @return
	 */
	public static Date getDateByString(String DateStr,String DateFormat){
		SimpleDateFormat dateFormat = new SimpleDateFormat(DateFormat);
		Date date = null;
		try {
			date = dateFormat.parse(DateStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

	/**
	 * 字符串转为时间戳
	 * @param DateStr  时间字符串
	 * @param DateFormat 字符串的时间格式 例如：yyyyMMdd；yyyy-MM-dd；yyyy-MM-dd HH:mm:ss
	 * @return
	 */
	public static long getDateLongByDateStr(String DateStr,String DateFormat){
		SimpleDateFormat dateFormat = new SimpleDateFormat(DateFormat);
		Date date = null;
		try {
			date = dateFormat.parse(DateStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date.getTime();
	}

	/**
	 *
	 * @param pDate 时间转字符串
	 * @param outFormat 字符串的时间格式 例如：yyyyMMdd；yyyy-MM-dd；yyyy-MM-dd HH:mm:ss
	 * @return
	 */
	public static String getDateStrByDate(Date pDate,String outFormat) {
		String dateStr = new SimpleDateFormat(outFormat).format(pDate);
		return dateStr;
	}

	/**
	 * 时间戳转为时间符串
	 * @param time 时间戳
	 * @param outFormat 字符串的时间格式 例如：yyyyMMdd；yyyy-MM-dd；yyyy-MM-dd HH:mm:ss
	 * @return
	 */
	public static String getDateStrByTime( long time,String outFormat) {
		Date millisecondDate= new Date(time);
		String dateStr = new SimpleDateFormat(outFormat).format(millisecondDate);
		return dateStr;
	}

	/**
	 * 获取指定时间的加减后时间， 如 加15分钟-timeOperate(15),减15分钟-timeOperate(-15)
	 * @param date 日期
	 * @param amount 加减的时间（分钟）， 加为正， 减为负
	 * @return
	 */
	public static Date timeOperate(Date date, Integer amount) {
		Calendar cl = Calendar.getInstance();
		cl.setTime(date);
		cl.add(Calendar.MINUTE, amount);
		return cl.getTime();
	}

	/**
	 * 获取时间戳指定时间的加减后时间， 如 加15天(15),减15小时(-15)
	 * @param time 时间戳
	 * @param DayAmount 加减的时间（天）， 加为正， 减为负
	 * @return
	 */
	public static long getTimeDayOperate(long time, Integer DayAmount) {
		return time+DayAmount*24*60*60*60*1000;
	}

	/**
	 * 获取时间戳指定时间的加减后时间， 如 加15小时(15),减15小时(-15)
	 * @param time 时间戳
	 * @param HAmount 加减的时间（小时）， 加为正， 减为负
	 * @return
	 */
	public static long getTimeHOperate(long time, Integer HAmount) {
		return time+HAmount*60*60*1000;
	}

	/**
	 * 获取时间戳指定时间的加减后时间， 如 加15分钟(15),减15分钟(-15)
	 * @param time 时间戳
	 * @param mAmount 加减的时间（分钟）， 加为正， 减为负
	 * @return
	 */
	public static long getTimeMOperate(long time, Integer mAmount) {
		return time+mAmount*60*1000;
	}

}

